struct efi efi;
EXPORT_SYMBOL(efi);
static efi_runtime_services_t *runtime;
+#ifdef XEN
+// this is a temporary hack to avoid CONFIG_VIRTUAL_MEM_MAP
+static unsigned long mem_limit = ~0UL, max_addr = 0x100000000;
+#else
static unsigned long mem_limit = ~0UL, max_addr = ~0UL;
+#endif
#define efi_call_virt(f, args...) (*(f))(args)
if (running_on_sim && md->type != EFI_CONVENTIONAL_MEMORY)
continue;
}
-// this is a temporary hack to avoid CONFIG_VIRTUAL_MEM_MAP
- if (md->phys_addr >= 0x100000000) continue;
#endif
/*
* granule_addr is the base of md's first granule.
#include <asm/processor.h>
#include <asm/desc.h>
#include <asm/hw_irq.h>
+#include <asm/setup.h>
//#include <asm/mpspec.h>
#include <xen/irq.h>
#include <xen/event.h>
#include <xen/elf.h>
//#include <asm/page.h>
#include <asm/pgalloc.h>
-#include <asm/dma.h> /* for MAX_DMA_ADDRESS */
#include <asm/asm-offsets.h> /* for IA64_THREAD_INFO_SIZE */
#include <asm/pal.h>
#include <asm/vhpt.h>
#include <public/hvm/ioreq.h>
+#include <public/arch-ia64.h>
#include <asm/tlbflush.h>
#include <asm/regionreg.h>
{
struct domain *d = v->domain;
struct pt_regs *regs;
- extern char saved_command_line[];
+ extern char dom0_command_line[];
#ifdef CONFIG_DOMAIN0_CONTIGUOUS
if (d == dom0) start_pc += dom0_start;
if (VMX_DOMAIN(v)) {
vmx_init_all_rr(v);
if (d == dom0)
-// VCPU(v,vgr[12]) = dom_fw_setup(d,saved_command_line,256L);
- regs->r28 = dom_fw_setup(d,saved_command_line,256L);
+ regs->r28 = dom_fw_setup(d,dom0_command_line,
+ COMMAND_LINE_SIZE);
/* Virtual processor context setup */
VCPU(v, vpsr) = IA64_PSR_BN;
VCPU(v, dcr) = 0;
} else {
init_all_rr(v);
if (d == dom0)
- regs->r28 = dom_fw_setup(d,saved_command_line,256L);
+ regs->r28 = dom_fw_setup(d,dom0_command_line,
+ COMMAND_LINE_SIZE);
else {
regs->ar_rsc |= (2 << 2); /* force PL2/3 */
if (*d->arch.cmdline == '\0') {
#define DEFAULT_CMDLINE "nomca nosmp xencons=tty0 console=tty0 root=/dev/hda1"
- regs->r28 = dom_fw_setup(d,DEFAULT_CMDLINE,256L);
+ regs->r28 = dom_fw_setup(d,DEFAULT_CMDLINE,
+ sizeof (DEFAULT_CMDLINE));
printf("domU command line defaulted to"
DEFAULT_CMDLINE "\n");
}
- else regs->r28 = dom_fw_setup(d,d->arch.cmdline,256L);
+ else regs->r28 = dom_fw_setup(d,d->arch.cmdline,
+ IA64_COMMAND_LINE_SIZE);
}
VCPU(v, banknum) = 1;
VCPU(v, metaphysical_mode) = 1;
#ifdef CONFIG_DOMAIN0_CONTIGUOUS
if (d == dom0) {
+ pte_t pteval;
if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
//printk("lookup_domain_mpa: bad dom0 mpaddr 0x%lx!\n",mpaddr);
//printk("lookup_domain_mpa: start=0x%lx,end=0x%lx!\n",dom0_start,dom0_start+dom0_size);
mpafoo(mpaddr);
}
- pte_t pteval = pfn_pte(mpaddr >> PAGE_SHIFT,
+ pteval = pfn_pte(mpaddr >> PAGE_SHIFT,
__pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX));
pte = &pteval;
return *(unsigned long *)pte;
unsigned long xenheap_phys_end;
char saved_command_line[COMMAND_LINE_SIZE];
+char dom0_command_line[COMMAND_LINE_SIZE];
struct vcpu *idle_vcpu[NR_CPUS];
void early_cmdline_parse(char **cmdline_p)
{
char *guest_cmd;
- char *split = "--";
+ static const char * const split = "--";
if (*cmdline_p == NULL) {
*cmdline_p = &null[0];
saved_command_line[0] = '\0';
+ dom0_command_line[0] = '\0';
return;
}
while (*guest_cmd == ' ') guest_cmd++;
}
- strlcpy(saved_command_line, guest_cmd, COMMAND_LINE_SIZE);
+ strlcpy(saved_command_line, *cmdline_p, COMMAND_LINE_SIZE);
+ strlcpy(dom0_command_line, guest_cmd, COMMAND_LINE_SIZE);
return;
}